package com.ruoyi.result.common;

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;

import java.io.InputStream;

public class PdfMerger {
    public static void mergePdfs(InputStream originalPdfStream, InputStream fileToAppendInputStream, String outputPdfPath) throws Exception {
        // 创建输出 PDF 文档
        PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outputPdfPath));

        // 读取原始 PDF
        PdfDocument reader1 = new PdfDocument(new PdfReader(originalPdfStream)); // 使用 InputStream
        // 将原始 PDF 的页面复制到输出文档中
        copyPages(reader1, pdfDoc);

        // 读取待追加的 PDF
        PdfDocument reader2 = new PdfDocument(new PdfReader(fileToAppendInputStream)); // 使用 InputStream
        // 将待追加 PDF 的页面复制到输出文档中
        copyPages(reader2, pdfDoc);

        // 关闭所有文档
        reader1.close();
        reader2.close();
        pdfDoc.close();
    }

    private static void copyPages(PdfDocument srcDoc, PdfDocument destDoc) {
        int numberOfPages = srcDoc.getNumberOfPages();
        for (int i = 1; i <= numberOfPages; i++) {
            PdfPage page = srcDoc.getPage(i).copyTo(destDoc);
            destDoc.addPage(page);
        }
    }
}
